home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
AMIGA
/
(A)G
/
(A)G1.ADF
/
ABasic_games
/
bg
< prev
next >
Wrap
Text File
|
1988-09-29
|
22KB
|
757 lines
WINDOW CLOSE 1
SCREEN 1,320,200,3,1
WINDOW 2,"",(0,0)-(311,185),16,1
DEFINT a-z
human=1:amiga=-1:volume=255
DIM rgb(WINDOW(6),2,1)
DIM board(25),tempbrd(25),menonboard(1),options(1,35)
DIM amymove(4),amyroll(4),dice(1),thisroll(4),movesto(4)
DIM d1(122),d2(122),d3(122),d4(122),d5(122),d6(122)
temp&=PEEKL(PEEKL(PEEKL(WINDOW(7)+46)+48)+4)
FOR i=0 TO 7
msg$=RIGHT$("00"+HEX$(PEEKW(temp&+2*i)),3)
FOR j=1 TO 3:rgb(i,j-1,0)=VAL("&h"+MID$(msg$,j,1)):NEXT
NEXT
FOR i=0 TO 3
READ r,g,b
PALETTE i,r/16,g/16,b/16
PALETTE i+4,r/28,g/28,b/28
NEXT
DATA 0, 0, 0, 7, 4, 3, 15,12,10, 13,13,13
temp&=PEEKL(PEEKL(PEEKL(WINDOW(7)+46)+48)+4)
FOR i=0 TO 7
msg$=RIGHT$("00"+HEX$(PEEKW(temp&+2*i)),3)
FOR j=1 TO 3:rgb(i,j-1,1)=VAL("&h"+MID$(msg$,j,1)):NEXT
NEXT
MENU 1,0,1,"System"
MENU 1,1,1,"Restart"
MENU 1,2,1,"About "
MENU 1,3,1,"WBench "
MENU 1,4,1,"Colors "
MENU 1,5,1,"Volume "
MENU 1,6,1,"List "
MENU 1,7,1,"Quit "
FOR temp=2 TO 4:MENU temp,0,0,"":NEXT
ON MENU GOSUB menudown
READ msg$
WHILE msg$<>"Done"
IF VAL(msg$)>0 THEN
COLOR VAL(msg$)
ELSE
PRINT SPC((39-LEN(msg$))/2);msg$
END IF
READ msg$
WEND
DATA 3,"","<<<-<<<- AMIGA BACKGAMMON ->>>->>>",""
DATA 2,"AmigaBasic Version by john everett"
DATA "ABasic Version by David Addison"
DATA "Original ST Version by TCB",""
DATA 7,"You will play the light pieces and"
DATA "move clockwise from the upper left"
DATA 6,"","To move a piece, click on piece"
DATA "to be moved and then click on the"
DATA "destination point"
DATA 1,"","To bear off use the bar on the"
DATA "left as the destination"
DATA 6,"","If you do not have a valid move"
DATA "click on the dice"
DATA 7,"","Enjoy!",""
DATA 2,"Loading data...","Done"
FOR i=0 TO 35:READ options(0,i),options(1,i):NEXT
DATA 8,6,6,13,6,8,6,13,6,13,8,13
DATA 13,6,13,6,13,13,6,8,13,13,0,0
DATA 8,6,13,13,13,8,13,13,8,13,13,13
DATA 13,6,8,6,13,13,13,9,13,13,13,13
DATA 13,6,13,13,13,8,13,13,13,8,13,13
DATA 13,8,13,7,13,13,13,13,13,13,24,13
OPEN "dice" FOR INPUT AS #1
FOR i=0 TO 122:INPUT #1,d1(i):NEXT
FOR i=0 TO 122:INPUT #1,d2(i):NEXT
FOR i=0 TO 122:INPUT #1,d3(i):NEXT
FOR i=0 TO 122:INPUT #1,d4(i):NEXT
FOR i=0 TO 122:INPUT #1,d5(i):NEXT
FOR i=0 TO 122:INPUT #1,d6(i):NEXT
CLOSE #1
LOCATE 23,10:PRINT "Click MOUSE to start"
CALL whoa
'--------------------------------------------------------------------
restart:
RESTORE restart
FOR i=0 TO 12:READ board(i):board(25-i)=-board(i):NEXT
DATA 0,2,0,0,0,0,-5,0,-3,0,0,0,5
menonboard(0)=15:menonboard(1)=15
thinkahead=0:firstmove=0:restart=0
WINDOW OUTPUT 2:COLOR 1,0:CLS
FOR place=1 TO 24:GOSUB triangle:NEXT
LINE (0,0)-(12,194),6,bf
LINE (2,2)-(10,192),0,bf
LINE (4,4)-(8,190),7,bf
LINE (146,0)-(165,194),1,bf
LINE (146,79)-(165,115),0,bf
LINE (146,80)-(165,114),6,bf
LINE (148,82)-(163,112),0,bf
LINE (150,84)-(161,110),7,bf
LINE (152,86)-(153,108),2,bf
LINE (154,86)-(159,88),2,bf
LINE (154,96)-(157,98),2,bf
LINE (154,106)-(159,108),2,bf
LINE (299,0)-(311,194),6,bf
LINE (301,2)-(309,192),0,bf
LINE (303,4)-(307,190),7,bf
FOR place=1 TO 24
FOR man=1 TO ABS(board(place))
GOSUB drawpiece
NEXT
NEXT
RANDOMIZE TIMER
dice(0)=dice(1):numbrmoves=2
WHILE dice(0)=dice(1):FOR i=0 TO 1:dice(i)=INT(6*RND+1):NEXT:WEND
IF dice(0)>dice(1) THEN turn=human ELSE turn=amiga
WINDOW CLOSE 3
GOTO showdice
'--------------------------------------------------------------------
rolldice:
IF dice(0)>0 THEN whichdie=0:GOSUB erasedice
IF dice(1)>0 THEN whichdie=1:GOSUB erasedice
turn=-turn:throw=0
dloop:
SOUND 500,.3,volume,0:SOUND 550,.3,volume,1
RANDOMIZE TIMER
dice(0)=INT(6*RND+1):dice(1)=INT(6*RND+1)
IF dice(0)=dice(1) THEN numbrmoves=4 ELSE numbrmoves=2
showdice:
dicepos=54-153*(turn=amiga)
FOR temp=0 TO 1
dicepos=32*temp+dicepos
IF dice(temp)=1 THEN
PUT (dicepos,87),d1,PSET
ELSEIF dice(temp)=2 THEN
PUT (dicepos,87),d2,PSET
ELSEIF dice(temp)=3 THEN
PUT (dicepos,87),d3,PSET
ELSEIF dice(temp)=4 THEN
PUT (dicepos,87),d4,PSET
ELSEIF dice(temp)=5 THEN
PUT (dicepos,87),d5,PSET
ELSEIF dice(temp)=6 THEN
PUT (dicepos,87),d6,PSET
END IF
NEXT
throw=throw+1:IF throw<12 THEN dloop
IF turn=amiga THEN
MENU ON
delay&=TIMER+1:WHILE TIMER<delay&:WEND
IF thinkahead>0 THEN amyready
IF firstmove=0 THEN
firstmove=1
IF dice(0)=2 AND dice(1)=6 THEN dice(0)=6:dice(1)=2:firstmove=2
amymove(2)=options(0,6*dice(0)+dice(1)-7)
amymove(1)=options(1,6*dice(0)+dice(1)-7)
amyroll(2)=dice(0)
amyroll(1)=dice(1)
IF firstmove=2 THEN dice(0)=2:dice(1)=6
IF numbrmoves=4 THEN
amymove(3)=amymove(1)
amyroll(3)=amyroll(1)
amymove(4)=amymove(2)
amyroll(4)=amyroll(2)
END IF
IF board(amymove(1)-amyroll(1))>1 THEN tryme
IF board(amymove(2)-amyroll(2))>1 THEN tryme
thinkahead=numbrmoves
GOTO amyready
END IF
GOTO amigaturn
END IF
MENU OFF
'--------------------------------------------------------------------
humanfrom:
GOSUB checkmouse
IF movepieceto=26 THEN canhumanpass
IF (board(25)>0 AND movepieceto<>25) OR movepieceto=0 OR board(movepieceto)<1 THEN humanfrom
upfrom=movepieceto
GOSUB pickuppiece
humanto:
GOSUB checkmouse
IF movepieceto=upfrom THEN
place=movepieceto
man=board(movepieceto)
GOSUB drawpiece
GOTO humanfrom
END IF
IF movepieceto>24 THEN humanto ' *** *** cant quit or on dice
IF movepieceto=0 THEN movepieceto=25
IF board(movepieceto)<-1 THEN humanto ' *** *** if amigapiece there
IF upfrom=25 THEN goingto=movepieceto ELSE goingto=movepieceto-upfrom
IF goingto<1 OR goingto>6 THEN humanto
whichdie=-1
IF goingto=dice(0) THEN whichdie=0:GOTO chekmove
IF goingto=dice(1) THEN whichdie=1:GOTO chekmove
IF movepieceto=25 AND dice(0)>goingto THEN goingto=dice(0):whichdie=0
IF movepieceto=25 AND dice(1)>goingto THEN goingto=dice(1):whichdie=1
IF whichdie=-1 THEN humanto
chekmove:
IF upfrom=25 OR upfrom+goingto<25 THEN domove
FOR i=1 TO 18
IF board(i)>0 THEN humanto
NEXT
IF upfrom+goingto=25 THEN domove
FOR i=19 TO upfrom-1
IF board(i)>0 THEN humanto
NEXT
'--------------------------------------------------------------------
domove:
IF restart THEN concede
IF goingto=dice(0) THEN whichdie=0 ELSE whichdie=1
IF numbrmoves<3 THEN GOSUB erasedice
numbrmoves=numbrmoves-1
place=upfrom
man=ABS(board(place))
GOSUB fixboard
goingto=goingto*turn
board(upfrom)=board(upfrom)-turn
IF upfrom=0 OR upfrom=25 THEN upfrom=25-upfrom
IF upfrom+goingto<1 OR upfrom+goingto>24 THEN offboard
IF board(upfrom+goingto)=-turn THEN
place=upfrom+goingto ' *** *** bump someone *** ***
man=1
GOSUB fixboard
place=-25*(turn=amiga)
board(place)=board(place)-turn
board(upfrom+goingto)=0
man=ABS(board(place))
GOSUB drawpiece
SOUND 500,1,volume,0:SOUND 1000,1,volume,1
END IF
place=upfrom+goingto
board(place)=board(place)+turn
man=ABS(board(place))
GOSUB drawpiece
SOUND 500,1,volume,0:SOUND 1000,1,volume,1
GOTO endmove
offboard:
menonboard((turn+1)/2)=menonboard((turn+1)/2)-1
i=6*(14-menonboard((turn+1)/2))+3
IF turn=amiga THEN
LINE (3,i)-STEP(6,6),piececolor+5,bf
LINE (4,i+1)-STEP(4,4),piececolor,bf
ELSE
LINE (3,194-i)-STEP(6,-6),piececolor+5,bf
LINE (4,194-i-1)-STEP(4,-4),piececolor,bf
END IF
SOUND 1200,2,volume,0:SOUND 1800,2,volume,1
IF menonboard(0)=0 OR menonboard(1)=0 THEN winner
endmove:
IF numbrmoves=0 THEN rolldice
GOTO showdice
'--------------------------------------------------------------------
amigaturn:
b1&=-99999&
ss=0
ht=0
b5=0
thisroll(1)=dice(0)
thisroll(2)=dice(1)
thisroll(3)=dice(0)
thisroll(4)=dice(0)
FOR i=1 TO 4
movesto(i)=24
NEXT
nmoves2=numbrmoves
j=-board(0)
IF j>numbrmoves THEN j=numbrmoves
IF j>0 THEN FOR i=1 TO j:movesto(i)=26:NEXT
tryme:
FOR i=0 TO 25:tempbrd(i)=board(i):NEXT
movesto2=0
movesto=menonboard(0)
FOR whichmove=1 TO nmoves2
IF movesto(whichmove)>25 THEN
IF tempbrd(25-thisroll(whichmove))>1 THEN z720
IF tempbrd(25-thisroll(whichmove))=1 THEN
tempbrd(25)=tempbrd(25)+1
tempbrd(25-thisroll(whichmove))=0
END IF
tempbrd(25-thisroll(whichmove))=tempbrd(25-thisroll(whichmove))-1
tempbrd(0)=tempbrd(0)+1
GOTO endtryme
END IF
findmove:
IF whichmove>1 THEN
IF movesto(whichmove)+ss>movesto(whichmove-1) THEN z120
END IF
IF tempbrd(movesto(whichmove))<0 THEN z140
z120:
movesto(whichmove)=movesto(whichmove)-1
IF movesto(whichmove)>0 THEN findmove
GOTO z670
z140:
IF movesto(whichmove)-thisroll(whichmove)<1 THEN z180
IF tempbrd(movesto(whichmove)-thisroll(whichmove))>1 THEN z120
IF tempbrd(movesto(whichmove)-thisroll(whichmove))=1 THEN
tempbrd(25)=tempbrd(25)+1
tempbrd(movesto(whichmove)-thisroll(whichmove))=0
END IF
tempbrd(movesto(whichmove)-thisroll(whichmove))=tempbrd(movesto(whichmove)-thisroll(whichmove))-1
tempbrd(movesto(whichmove))=tempbrd(movesto(whichmove))+1
GOTO endtryme
z180:
FOR j=7 TO 24
IF tempbrd(j)<0 THEN z670
NEXT
IF movesto(whichmove)-thisroll(whichmove)=0 THEN z220
jm=movesto(whichmove)+1
FOR j=jm TO 6
IF tempbrd(j)<0 THEN z670
NEXT
z220:
tempbrd(movesto(whichmove))=tempbrd(movesto(whichmove))+1
movesto=movesto-1
endtryme:
movesto2=movesto2+thisroll(whichmove)
NEXT
IF movesto2<ht THEN z720
ht=movesto2:mi=0:bt=0
FOR i=1 TO 24
IF tempbrd(i)>0 THEN
IF i<19 THEN mi=mi+tempbrd(i)*INT((22-i)/4)/2
END IF
IF tempbrd(i)<0 THEN
IF i>6 THEN mi=mi+tempbrd(i)*INT((i-3)/4)/2
END IF
NEXT
mi=mi+3*(tempbrd(0)+tempbrd(25))
IF tempbrd(25)>1 THEN mi=mi+1
ct=0
IF tempbrd(25)-tempbrd(0) THEN ct=1:GOTO z340 '*** *** IF x-y* THEN what???
FOR i=24 TO 2 STEP -1
IF tempbrd(i)<0 THEN z320
NEXT
GOTO z340
z320:
FOR j=i-1 TO 1 STEP -1
IF tempbrd(j)>0 THEN ct=1:GOTO z340
NEXT
z340:
bl=0
IF ct=0 THEN bt=0:GOTO z420
hp=0
FOR i=1 TO 24
IF tempbrd(i)=-1 THEN
bt=bt-INT((30-i)/4)/2
IF i<7 THEN mi=mi-1
END IF
IF i>18 AND board(i)>1 THEN hp=hp+1
NEXT
hp=hp*hp+(hp=0)
bt=INT(bt*hp/25+.5)/2
FOR i=1 TO 4
b=0
FOR j=i TO i+5
b=b-(tempbrd(j)<-1)
NEXT
b=INT(b*b/4)
bl=bl-(b>bl)*(b-bl)
NEXT
z420:
IF mi+bl+bt<b1&+b2+b3 THEN z630
tc=0:bo=0:ds=0:lo=1
FOR i=1 TO 24
IF i>6 THEN IF tempbrd(i)<0 THEN tc=tc+tempbrd(i)*INT((i-1)/6):bo=bo+i*tempbrd(i)
IF tempbrd(i)<0 THEN ds=ds+1:lo=lo*(0-tempbrd(i))
NEXT i
IF b1&=-99999& THEN z600
IF bl+mi+bt>b2+b1&+b3 THEN z600
IF movesto<b9 THEN z600
IF movesto>b9 THEN z630
IF tc<b4 THEN z630
IF tc>b4 THEN z600
IF ds<b6 THEN z630
IF ds>b6 THEN z600
IF bo<b7 THEN z630
IF bo>b7 THEN z600
IF lo<b8 THEN z630
IF lo>b8 THEN z600
GOTO z630
z600:
b5=nmoves2:b2=bl:b3=bt:b4=tc:b1&=mi:b9=movesto
b6=ds:bt=bo:b8=lo:j=1-(b5<numbrmoves)
FOR i=1 TO b5
amymove(j+i-1)=movesto(b5+1-i)
amyroll(j+i-1)=thisroll(b5+1-i)
NEXT
z630:
IF movesto(nmoves2)=26 THEN z720
movesto(nmoves2)=movesto(nmoves2)-1
IF movesto(nmoves2)>0 THEN tryme
whichmove=nmoves2
z670:
FOR j=whichmove TO nmoves2:movesto(j)=24:NEXT
whichmove=whichmove-1
IF whichmove=0 THEN z720
IF movesto(whichmove)=26 THEN z720
IF movesto(whichmove)>1 THEN movesto(whichmove)=movesto(whichmove)-1:GOTO tryme
GOTO z670
z720:
IF dice(1)<>dice(0) THEN
IF ss=1 THEN
ss=0
thisroll(1)=dice(0)
thisroll(2)=dice(1)
ELSE
ss=1
thisroll(1)=dice(1)
thisroll(2)=dice(0)
GOTO tryme
END IF
END IF
z760:
nmoves2=nmoves2-1
IF nmoves2<>0 AND ht=0 THEN tryme
IF b5<numbrmoves THEN
amymove(1)=27
thinkahead=b5+1
ELSE
thinkahead=numbrmoves
END IF
amyready:
movepieceto=amymove(thinkahead)
goingto=amyroll(thinkahead)
thinkahead=thinkahead-1
IF movepieceto=26 THEN movepieceto=0
IF movepieceto=27 THEN rolldice
upfrom=movepieceto
GOSUB pickuppiece
GOTO domove
'--------------------------------------------------------------------
canhumanpass:
IF board(25)<>0 THEN
FOR i=0 TO 1
IF dice(i)>0 AND board(dice(i))>-2 THEN msg$="Must move onto board":GOTO passwindow
NEXT
ELSE
FOR i=0 TO 1
IF dice(i)>0 THEN
FOR j=1 TO 24-dice(i)
IF board(j)>0 AND board(j+dice(i))>-2 THEN msg$="You have a move":GOTO passwindow
NEXT
END IF
NEXT
FOR j=1 TO 18
IF board(j)>0 THEN rolldice
NEXT
FOR i=0 TO 1
IF dice(i)>0 AND board(25-dice(i))>0 THEN msg$="You can move off":GOTO passwindow
NEXT
FOR i=19 TO 24
IF board(i)>0 THEN
FOR j=0 TO 1
IF dice(j)>0 AND dice(j)>25-i THEN msg$="Get off the board, dummy":GOTO passwindow
NEXT
END IF
NEXT
END IF
GOTO rolldice
passwindow:
WINDOW 3,"Click to continue...",(20,80)-(290,88),0,1
BEEP:PRINT msg$;:whoa
WINDOW CLOSE 3
GOTO humanfrom
'--------------------------------------------------------------------
winner:
FOR whichdie=0 TO 1
IF dice(whichdie)>0 THEN GOSUB erasedice
NEXT
IF menonboard(0)=0 THEN msg$="the AMIGA wins" ELSE msg$="the HUMAN wins"
IF menonboard(0)<15 AND menonboard(1)<15 THEN endofgame
FOR i=0 TO 6
IF board(i)>0 OR board(25-i)<0 THEN
msg$=msg$+" with a BACKGAMMON"
GOTO endofgame
END IF
NEXT
msg$=msg$+" with a GAMMON"
endofgame:
WINDOW 3," It's all over and...",(20,80)-(290,88),0,1
COLOR 3:LOCATE 1,(34-LEN(msg$))/2:PRINT msg$;
FOR temp=1 TO 100
FOR i=0 TO 2:SWAP rgb(1,i,1),rgb(2,i,1):NEXT
FOR i=1 TO 2:PALETTE i,rgb(i,0,1)/16,rgb(i,1,1)/16,rgb(i,2,1)/16:NEXT
SOUND 10*temp+200,.5,volume,0:SOUND 12.5*temp+250,.5,volume,3
FOR i=0 TO 2:SWAP rgb(1,i,1),rgb(2,i,1):NEXT
FOR i=1 TO 2:PALETTE i,rgb(i,0,1)/16,rgb(i,1,1)/16,rgb(i,2,1)/16:NEXT
SOUND 15*temp+300,.5,volume,1:SOUND 20*temp+400,.5,volume,2
NEXT
GOTO restart
concede:
msg$="the HUMAN has given up!":GOTO endofgame
'--------------------------------------------------------------------
checkmouse:
IF restart THEN concede
WHILE MOUSE(0)=0 AND menu0=0
menu0=MENU(0)
SLEEP
WEND:WHILE MOUSE(0)<>0:WEND
IF menu0>0 THEN GOSUB menudown:GOTO checkmouse
mousex=MOUSE(3):mousey=MOUSE(4)
IF mousex<14 THEN movepieceto=0:RETURN
IF mousex>146 AND mousex<165 THEN
IF mousey>116 THEN movepieceto=25:RETURN
IF mousey>77 THEN
WINDOW 3,"Do that again...",(30,30)-(174,38),0,1
COLOR 2,7:CLS:PRINT " it feels GOOD!!!";
delay&=TIMER+1:WHILE TIMER<delay&:WEND
WINDOW CLOSE 3
END IF
GOTO checkmouse
ELSEIF mousex<147 THEN
IF mousey>85 AND mousey<109 THEN movepieceto=26:RETURN
ELSEIF mousex>164 THEN
IF mousey>85 AND mousey<109 THEN checkmouse
mousex=mousex-21
END IF
mousex=mousex-25
whichpoint=mousex/22
IF mousey>96 THEN
movepieceto=24-whichpoint
ELSE
movepieceto=whichpoint+1
END IF
RETURN
'--------------------------------------------------------------------
putwhere:
IF place<13 THEN x=place-1 ELSE x=24-place
placex=22*x+24
IF x>5 THEN placex=placex+21
IF place=0 OR place=25 THEN placex=155
placey=17*(man-1)+8
IF place>12 THEN placey=194-placey
IF man>5 THEN placey=14*(place>12)+8-176*(place>12)
IF board(place)<0 THEN piececolor=1 ELSE piececolor=2
RETURN
drawpiece:
GOSUB putwhere
IF man<6 THEN
CIRCLE(placex,placey),10,piececolor+5
PAINT(placex,placey),piececolor,piececolor+5
ELSE
COLOR piececolor+5,piececolor:LOCATE -22*(place>12)+2
PRINT PTAB(placex-3);:PRINT USING "#";man-4;
END IF
RETURN
fixboard:
GOSUB putwhere
LINE (placex-10,placey-8)-STEP(20,16),0,bf
IF place=0 OR place=25 THEN
LINE (146,placey-8)-(165,placey+8),1,bf
ELSE
GOSUB triangle
END IF
IF man>1 THEN
FOR man=1 TO man-1
GOSUB drawpiece
NEXT
END IF
RETURN
'--------------------------------------------------------------------
triangle:
IF place<13 THEN x=place-1 ELSE x=24-place
trix=22*x+14:IF x>5 THEN trix=trix+21
COLOR -(place AND 1)+2
IF place<13 THEN
AREA (trix,0):AREA STEP(10,80)
AREA STEP(0,-1):AREA STEP(10,-79):AREAFILL
ELSE
AREA (trix,194):AREA STEP(10,-80)
AREA STEP(0,1):AREA STEP(10,79):AREAFILL
END IF
RETURN
'--------------------------------------------------------------------
pickuppiece:
place=movepieceto
man=ABS(board(place))
GOSUB putwhere
CIRCLE(placex,placey),10,7
PAINT(placex,placey),3,7
SOUND 1000,.1,volume,0:SOUND 2000,.1,volume,1
IF turn=human THEN temp=5 ELSE temp=1
WHILE temp<5
SOUND 1000,.1,volume,0
PAINT(placex,placey),piececolor,7
PAINT(placex,placey),3,7
temp=temp+1
WEND
RETURN
erasedice:
dicepos=54-153*(turn=amiga)
dicepos=32*whichdie+dicepos
LINE (dicepos,87)-STEP(20,19),0,bf
dice(whichdie)=0
RETURN
'--------------------------------------------------------------------
menudown:
menu0=MENU(0):menu0=0
ON MENU(1) GOTO giveup,about,wbench,fixcolors,fixvolume,show,quit
giveup:
restart=-1:RETURN
about:
WINDOW 3,"about...",(58,24)-(249,104),0,1
COLOR 7,2:CLS
PRINT "This is the first of the"
PRINT " David Addison games"
PRINT " which I intend to "
PRINT " rewrite in AmigaBASIC."
PRINT " More to come!":PRINT:COLOR 1
PRINT " john everett"
PRINT " PeopleLINK ID OHS303":PRINT:COLOR 7
PRINT " ... Click Me ...";:whoa
WINDOW CLOSE 3:WINDOW 2
RETURN
wbench:
WINDOW 3,"BackGammon",(400,0)-(480,8),18,-1
COLOR 3,2:CLS:PRINT " Click Me";:whoa
WINDOW CLOSE 3:WINDOW 2
RETURN
fixcolors:
CALL docolors
RETURN
fixvolume:
WINDOW 3,"Volume:",(30,80)-(287,88),0,1
LINE (0,0)-(volume-1,8),7,bf
LINE (volume,0)-(volume+1,8),3,bf
LINE (volume+2,0)-(257,8),0,bf
SOUND 300,30,volume,0:SOUND 400,30,volume,1
WHILE MOUSE(0)=0:SLEEP:WEND
WHILE MOUSE(0)<0
volume=MOUSE(1):IF volume>255 THEN volume=255
SOUND 300,.6,volume,0:SOUND 400,.6,volume,1
LINE (0,0)-(volume-1,8),7,bf
LINE (volume,0)-(volume+1,8),3,bf
LINE (volume+2,0)-(257,8),0,bf
WEND
WINDOW CLOSE 3
RETURN
show:
listflag=-1
quit:
MENU RESET
IF NOT debug THEN
FOR freq=1200 TO 100 STEP -10
SOUND freq,.3,volume,0:SOUND 1.25*freq,.3,volume,1
NEXT
WINDOW 9,,(236,89)-(236+160,89+7),0
COLOR 3,2:CLS:PRINT " john everett":PRINT "PeopleLINK ID OHS303";
SOUND 200,50,volume,0:SOUND 250,50,volume,1
SOUND 300,50,volume,2:SOUND 400,50,volume,3
END IF
WINDOW CLOSE 2:SCREEN CLOSE 1
IF NOT debug THEN
delay&=TIMER+3:WHILE TIMER<delay&:WEND
WINDOW CLOSE 9
END IF
REM $ignore on
IF listflag THEN LIST
REM $ignore off
SOUND 1600,1,volume,0:SOUND 2000,1,volume,1
SOUND 100,2,volume,0:SOUND 125,2,volume,1
IF listflag THEN END
SYSTEM
'--------------------------------------------------------------------
SUB whoa STATIC
WHILE MOUSE(0)<>0:WEND:WHILE MOUSE(0)=0:SLEEP:WEND:WHILE MOUSE(0)<>0:WEND
END SUB
SUB msgbox (x,y,pen,paper,msg$) STATIC
IF x<0 THEN
x=(WINDOW(2)/8-LEN(msg$))/2
length=WINDOW(2)/8-2*x+4
ELSE
length=LEN(msg$)+4
END IF
IF y>-1 AND msg$<>"" THEN
LINE (8*x-15,8*ABS(y)-12)-(8*x+8*length-2,8*ABS(y)+2),pen,bf
LINE (8*x-13,8*ABS(y)-11)-(8*x+8*length-4,8*ABS(y)+1),paper,bf
LINE (8*x-11,8*ABS(y)-10)-(8*x+8*length-6,8*ABS(y)),pen,bf
LINE (8*x-9,8*ABS(y)-9)-(8*x+8*length-8,8*ABS(y)-1),paper,bf
END IF
COLOR pen,paper:LOCATE ABS(y),x+2:PRINT msg$;
END SUB
SUB docolors STATIC
SHARED rgb()
WINDOW 8," Palette ",(60,30)-(226,144),18,1
FOR i=0 TO WINDOW(6)/4-1
FOR j=0 TO 3
LINE (24*(j+3) ,10*i )-STEP(23,9),4*i+j,bf
LINE (24*(j+3)+2,10*i+1)-STEP(19,7),0,bf
LINE (24*(j+3)+4,10*i+2)-STEP(15,5),4*i+j,bf
IF 4*i+j>WINDOW(6) THEN j=3
NEXT
NEXT
msgbox 2,14,1,0,"RESET"
msgbox 13,14,1,0,"OKAY"
colorloop:
temp&=PEEKL(PEEKL(PEEKL(WINDOW(7)+46)+48)+4)
msg$=RIGHT$("00"+HEX$(PEEKW(temp&+2*colr)),3)
LOCATE 12,1
FOR i=0 TO 2
c(i)=VAL("&h"+MID$(msg$,i+1,1))
LINE (24*i+2,0)-(24*i+20,74-5*c(i)),0,bf
LINE (24*i+2,75-5*c(i))-(24*i+20,80),1,bf
PRINT " "MID$(msg$,i+1,1)" ";
NEXT
PRINT " color="colr;
i=MOUSE(0):i=0:WHILE i=0:i=MOUSE(0):SLEEP:WEND
IF MOUSE(3)>166 OR MOUSE(4)>114 THEN colorloop
IF MOUSE(3)>72 THEN
i=(MOUSE(3)-82)/24:j=(MOUSE(4)-5)/10
IF 4*j+i<=WINDOW(6) THEN colr=4*j+i
END IF
IF MOUSE(3)<71 AND MOUSE(4)<80 THEN
WHILE MOUSE(0)<>0
j=15-MOUSE(2)/5:i=(MOUSE(3)-10)/24
IF j=>0 AND j<16 THEN c(i)=j
PALETTE colr,c(0)/16,c(1)/16,c(2)/16
LINE (24*i+2,0)-(24*i+20,74-5*c(i)),0,bf
LINE (24*i+2,75-5*c(i))-(24*i+20,80),colr,bf
LOCATE 12,3*i+2:PRINT MID$("0123456789ABCDEF",c(i)+1,1);
WEND
END IF
IF MOUSE(4)<102 THEN colorloop
IF MOUSE(3)<88 THEN
FOR i=0 TO WINDOW(6)
PALETTE i,rgb(i,0,0)/16,rgb(i,1,0)/16,rgb(i,2,0)/16
NEXT
SOUND 800,1,volume,0:SOUND 1000,1,volume,1
GOTO colorloop
END IF
temp&=PEEKL(PEEKL(PEEKL(WINDOW(7)+46)+48)+4)
FOR i=0 TO 7
msg$=RIGHT$("00"+HEX$(PEEKW(temp&+2*i)),3)
FOR j=1 TO 3:rgb(i,j-1,1)=VAL("&h"+MID$(msg$,j,1)):NEXT
NEXT
WINDOW CLOSE 8
END SUB